package com.basic.business.goodsIndicators.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.basic.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import com.basic.common.utils.StringUtils;
import com.basic.common.utils.uuid.ULID;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 商品指标数据对象 t_goods_indicators
 *
 * @author zhaoxy_jn@163.com
 * @date 2025-02-11
 */
@Getter
@Setter
@ExcelIgnoreUnannotated
public class TGoodsIndicators extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private String id;

    /** 文件id */
    @ExcelProperty(value = "文件id")
    private String fileId;

    /** 上新日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date upNewDate;

    /** 店铺id */
    @ExcelProperty(value = "店铺id")
    private String storeId;

    /** 统计日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "统计日期")
    private Date statDate;

    /** 商品id */
    @ExcelProperty(value = "商品id")
    private String goodsId;

    /** 商品名称 */
    @ExcelProperty(value = "商品名称")
    private String goodsName;

    /** 主商品id */
    @ExcelProperty(value = "主商品id")
    private String mainGoodsId;

    /** 商品类型 */
    @ExcelProperty(value = "商品类型")
    private String goodsType;

    /** 货号 */
    @ExcelProperty(value = "货号")
    private String goodsNo;

    /** 商品状态 */
    @ExcelProperty(value = "商品状态")
    private String goodsStatus;

    /** 商品标签 */
    @ExcelProperty(value = "商品标签")
    private String goodsLabel;

    /** 商品访客数 */
    @ExcelProperty(value = "商品访客数")
    private Integer goodsVisitorNumber;

    /** 商品浏览量 */
    @ExcelProperty(value = "商品浏览量")
    private Integer goodsPageViewNumber;

    /** 平均停留时长 */
    @ExcelProperty(value = "平均停留时长")
    private Double averageStopDuration;

    /** 商品详情页跳出率 */
    @ExcelProperty(value = "商品详情页跳出率")
    private String goodsDetailJumpRatio;

    /** 商品收藏人数 */
    @ExcelProperty(value = "商品收藏人数")
    private Integer goodsCollectPeopleNumber;

    /** 商品加购件数 */
    @ExcelProperty(value = "商品加购件数")
    private Integer goodsAddPurchaseNumber;

    /** 商品加购人数 */
    @ExcelProperty(value = "商品加购人数")
    private Integer goodsAddPurchasePeopleNumber;

    /** 下单买家数 */
    @ExcelProperty(value = "下单买家数")
    private Integer orderBuyerNumber;

    /** 下单件数 */
    @ExcelProperty(value = "下单件数")
    private Integer orderNumber;

    /** 下单金额 */
    @ExcelProperty(value = "下单金额")
    private BigDecimal orderAmount;

    /** 下单转化率 */
    @ExcelProperty(value = "下单转化率")
    private String orderConversionRatio;

    /** 支付买家数 */
    @ExcelProperty(value = "支付买家数")
    private Integer payBuyerNumber;

    /** 支付件数 */
    @ExcelProperty(value = "支付件数")
    private Integer payNumber;

    /** 支付金额 */
    @ExcelProperty(value = "支付金额")
    private BigDecimal payAmount;

    /** 商品支付转化率 */
    @ExcelProperty(value = "商品支付转化率")
    private String goodsPayConversionRatio;

    /** 支付新买家数 */
    @ExcelProperty(value = "支付新买家数")
    private Integer payNewBuyerNumber;

    /** 支付老买家数 */
    @ExcelProperty(value = "支付老买家数")
    private Integer payOldBuyerNumber;

    /** 老买家支付金额 */
    @ExcelProperty(value = "老买家支付金额")
    private BigDecimal oldBuyerPayAmount;

    /** 聚划算支付金额 */
    @ExcelProperty(value = "聚划算支付金额")
    private BigDecimal jhsPayAmount;

    /** 访客平均价值 */
    @ExcelProperty(value = "访客平均价值")
    private BigDecimal visitorAverageValue;

    /** 成功退款金额 */
    @ExcelProperty(value = "成功退款金额")
    private BigDecimal successRefundAmount;

    /** 竞争力评分 */
    @ExcelProperty(value = "竞争力评分")
    private String competitiveScore;

    /** 年累计支付金额 */
    @ExcelProperty(value = "年累计支付金额")
    private BigDecimal yearPayAmount;

    /** 月累计支付金额 */
    @ExcelProperty(value = "月累计支付金额")
    private BigDecimal monthPayAmount;

    /** 月累计支付件数 */
    @ExcelProperty(value = "月累计支付件数")
    private Integer monthPayNumber;

    /** 搜索引导支付转化率 */
    @ExcelProperty(value = "搜索引导支付转化率")
    private String searchPayRatio;

    /** 搜索引导访客数 */
    @ExcelProperty(value = "搜索引导访客数")
    private Integer searchVisitorNumber;

    /** 搜索引导支付买家数 */
    @ExcelProperty(value = "搜索引导支付买家数")
    private Integer searchBuyerNumber;

    /** 结构化详情引导转化率 */
    @ExcelProperty(value = "结构化详情引导转化率")
    private String structuredDetailConversionRatio;

    /** 结构化详情引导成交占比 */
    @ExcelProperty(value = "结构化详情引导成交占比")
    private String structuredDetailDealProportion;

    /** 状态 正常：NORMAL 删除：DELETED 锁定：LOCKED */
    @ExcelProperty(value = "状态 正常：NORMAL 删除：DELETED 锁定：LOCKED")
    private String status;

    /** 用户id */
    private Long userId;

    /** 部门id */
    private Long deptId;

    public void setId(String id) {
        this.id = StringUtils.isNotEmpty(id) ? id : ULID.getId();
    }

    //店铺名称
    private String storeName;

    //事业部名称
    private String divName;

    //负责人
    private String storeLeader;

    //排序
    private String prop;
    private String order;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date statDateStart;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date statDateEnd;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date upNewDateStart;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date upNewDateEnd;

    private Integer goodsVisitorNumberMin;
    private Integer goodsVisitorNumberMax;

    private Double averageStopDurationMin;
    private Double averageStopDurationMax;

    private String goodsDetailJumpRatioMin;
    private String goodsDetailJumpRatioMax;

    private Integer goodsCollectPeopleNumberMin;
    private Integer goodsCollectPeopleNumberMax;

    private Integer goodsAddPurchasePeopleNumberMin;
    private Integer goodsAddPurchasePeopleNumberMax;

    private Integer payBuyerNumberMin;
    private Integer payBuyerNumberMax;

    private Integer payNumberMin;
    private Integer payNumberMax;

    private BigDecimal payAmountMin;
    private BigDecimal payAmountMax;

    private Integer payOldBuyerNumberMin;
    private Integer payOldBuyerNumberMax;

    private BigDecimal oldBuyerPayAmountMin;
    private BigDecimal oldBuyerPayAmountMax;

    private BigDecimal visitorAverageValueMin;
    private BigDecimal visitorAverageValueMax;

    private BigDecimal successRefundAmountMin;
    private BigDecimal successRefundAmountMax;

    private String competitiveScoreMin;
    private String competitiveScoreMax;

    private BigDecimal yearPayAmountMin;
    private BigDecimal yearPayAmountMax;

    private String searchPayRatioMin;
    private String searchPayRatioMax;

    private Integer searchVisitorNumberMin;
    private Integer searchVisitorNumberMax;

    private Integer searchBuyerNumberMin;
    private Integer searchBuyerNumberMax;

    private BigDecimal costAmountMin;
    private BigDecimal costAmountMax;

    private BigDecimal totalTransactionAmountMin;
    private BigDecimal totalTransactionAmountMax;

    private Double actualProductionRatioMin;
    private Double actualProductionRatioMax;

    private Integer impressionsMin;
    private Integer impressionsMax;

    private Integer hitsMin;
    private Integer hitsMax;

    private String clickRateMin;
    private String clickRateMax;

    private BigDecimal averageClickCostMin;
    private BigDecimal averageClickCostMax;

    private Integer totalTransactionsNumberMin;
    private Integer totalTransactionsNumberMax;

    private String clickConversionRateMin;
    private String clickConversionRateMax;

    private Integer totalShopCartNumberMin;
    private Integer totalShopCartNumberMax;

    private String unClickConversionRateMin;
    private String unClickConversionRateMax;

    private Double inputOutputRatioMin;
    private Double inputOutputRatioMax;

    private Integer wangConsultNumberMin;
    private Integer wangConsultNumberMax;

    private Integer dealPeopleNumberMin;
    private Integer dealPeopleNumberMax;

    private List<String> columns;
}
